#include <stdbool.h>
#include <stdlib.h>

#define VALUES_QUEUE_EMPTY false

typedef struct lpqueue_t lpqueue;

lpqueue * queue_init(unsigned queue_length);
bool queue_pop(lpqueue * q, void ** cmd_value_p, size_t * cmd_size_p);
bool queue_prepend(lpqueue * q, void * cmd_value, size_t cmd_size, bool make_copy);
bool queue_append(lpqueue * q, void * cmd_value, size_t cmd_size, bool make_copy);
bool queue_discard_last(lpqueue * q);
//TODO queue destroy

unsigned queue_get_current_size(lpqueue * q);
